﻿using System.Collections.ObjectModel;
using Renci.Data.Interop.OpenGIS.Gml;
using Renci.Data.Interop.OpenGIS.Om_10;

namespace Renci.Data.Interop.OpenGIS.Wfs
{
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.opengis.net/wfs")]
    [System.Xml.Serialization.XmlRootAttribute("Insert", Namespace = "http://www.opengis.net/wfs", IsNullable = false)]
    public class InsertElementType
    {
        /// <remarks/>
        public InsertElementType()
        {
            this.IdGenerationOption = IdentifierGenerationOptionType.GenerateNew;
            this.InputFormat = "text/xml; subtype=gml/3.1.1";
        }

        private Collection<AbstractFeatureType> _features = new Collection<AbstractFeatureType>();
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("MultiPointCoverage", Type = typeof(MultiPointCoverageType), IsNullable = false)]
        [System.Xml.Serialization.XmlElementAttribute("MultiCurveCoverage", Type = typeof(MultiCurveCoverageType), IsNullable = false)]
        [System.Xml.Serialization.XmlElementAttribute("MultiSurfaceCoverage", Type = typeof(MultiSurfaceCoverageType), IsNullable = false)]
        [System.Xml.Serialization.XmlElementAttribute("MultiSolidCoverage", Type = typeof(MultiSolidCoverageType), IsNullable = false)]
        [System.Xml.Serialization.XmlElementAttribute("GridCoverage", Type = typeof(GridCoverageType), IsNullable = false)]
        [System.Xml.Serialization.XmlElementAttribute("RectifiedGridCoverage", Type = typeof(RectifiedGridCoverageType), IsNullable = false)]
        [System.Xml.Serialization.XmlElementAttribute("FeatureCollection", Type = typeof(FeatureCollectionType), IsNullable = false)]
        [System.Xml.Serialization.XmlElementAttribute("Observation", typeof(Om_10.ObservationType))]
        [System.Xml.Serialization.XmlElementAttribute("DirectedObservationAtDistance", Type = typeof(DirectedObservationAtDistanceType), IsNullable = false)]
        [System.Xml.Serialization.XmlElementAttribute("DirectedObservation", Type = typeof(DirectedObservationType), IsNullable = false)]
        [System.Xml.Serialization.XmlElementAttribute("DiscreteCoverageObservation", typeof(DiscreteCoverageObservationType))]
        [System.Xml.Serialization.XmlElementAttribute("ElementCoverageObservation", typeof(ElementCoverageObservationType))]
        [System.Xml.Serialization.XmlElementAttribute("PointCoverageObservation", typeof(PointCoverageObservationType))]
        [System.Xml.Serialization.XmlElementAttribute("TimeSeriesObservation", typeof(TimeSeriesObservationType))]
        [System.Xml.Serialization.XmlElementAttribute("DiscreteCoverageObs", typeof(DiscreteCoverageObsType))]
        [System.Xml.Serialization.XmlElementAttribute("PointCoverageObs", typeof(PointCoverageObsType))]
        [System.Xml.Serialization.XmlElementAttribute("TimeSeriesObs", typeof(TimeSeriesObsType))]
        [System.Xml.Serialization.XmlElementAttribute("CategoryObservation", typeof(CategoryObservation))]
        [System.Xml.Serialization.XmlElementAttribute("ComplexObservation", typeof(ComplexObservation))]
        [System.Xml.Serialization.XmlElementAttribute("CountObservation", typeof(CountObservation))]
        [System.Xml.Serialization.XmlElementAttribute("GeometryObservation", typeof(GeometryObservation))]
        [System.Xml.Serialization.XmlElementAttribute("Measurement", typeof(MeasurementObservation))]
        [System.Xml.Serialization.XmlElementAttribute("TemporalObservation", typeof(TemporalObservation))]
        [System.Xml.Serialization.XmlElementAttribute("TruthObservation", typeof(TruthObservation))]
        [System.Xml.Serialization.XmlElementAttribute("ObservationCollection", Type = typeof(ObservationCollectionType), IsNullable = false)]
        public Collection<AbstractFeatureType> Features
        {
            get
            {
                return this._features;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("idgen")]
        [System.ComponentModel.DefaultValueAttribute(IdentifierGenerationOptionType.GenerateNew)]
        public IdentifierGenerationOptionType IdGenerationOption { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("handle")]
        public string Handle { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("inputFormat")]
        [System.ComponentModel.DefaultValueAttribute("text/xml; subtype=gml/3.1.1")]
        public string InputFormat { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("srsName", DataType = "anyURI")]
        public string SrsName { get; set; }
    }
}
